/**
 * 绘制圆弧
 * @param ctx canvas上下文
 * @param x 圆弧起始点x坐标
 * @param y 圆弧起始点y坐标
 * @param radius 圆弧半径
 * @param startAngle 圆弧起始角度
 * @param endAngle 圆弧结束角度
 * @param anticlockwise 是否逆时针
 * @param lineWidth 线宽
 * @param strokeStyle 线条颜色
 * @param fillStyle 填充颜色
 */
// Function to draw an arc
export const drawArc = (
  ctx,
  x,
  y,
  radius,
  startAngle,
  endAngle,
  anticlockwise,
  lineWidth,
  strokeStyle,
  fillStyle
) => {
  ctx.beginPath()
  ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise)
  if (lineWidth) ctx.lineWidth = lineWidth
  if (strokeStyle) ctx.strokeStyle = strokeStyle
  if (fillStyle) ctx.fillStyle = fillStyle
  if (fillStyle) ctx.fill()
  ctx.stroke()
  ctx.closePath()
}

// Function to draw a line
/**
 * 绘制直线
 * @param ctx canvas上下文
 * @param startX 直线起始点x坐标
 * @param startY 直线起始点y坐标
 * @param endX 直线结束点x坐标
 * @param endY 直线结束点y坐标
 * @param lineWidth 线宽
 * @param strokeStyle 线条颜色
 */
export const drawLine = (ctx, startX, startY, endX, endY, lineWidth, strokeStyle) => {

  ctx.beginPath()
  ctx.moveTo(startX, startY)
  ctx.lineTo(endX, endY)
  ctx.lineWidth = lineWidth
  ctx.strokeStyle = strokeStyle
  ctx.stroke()
  ctx.closePath()
}

//画横线
/**
 * 画横线
 * @param {canvas上下文} ctx
 * @param {横线起始点x坐标} startX
 * @param {横线起始点y坐标} startY
 * @param {横线长度} lineLength
 * @param {横线宽度} lineWidth
 * @param {横线颜色} strokeStyle
 */
export const drawHorizontalLine = (ctx, startX, startY, lineLength, lineWidth, strokeStyle) => {
  console.log(ctx, startX, startY, lineLength, lineWidth, strokeStyle)

  ctx.beginPath()
  ctx.moveTo(startX, startY)
  ctx.lineTo(startX + lineLength, startY)
  ctx.lineWidth = lineWidth
  ctx.strokeStyle = strokeStyle
  ctx.stroke()
  ctx.closePath()
}

//画竖线
/**
 * 画竖线
 * @param {canvas上下文} ctx
 * @param {竖线起始点x坐标} startX
 * @param {竖线起始点y坐标} startY
 * @param {竖线长度} lineLength
 * @param {竖线宽度} lineWidth
 * @param {竖线颜色} strokeStyle
 */
export const drawVerticalLine = (ctx, startX, startY, lineLength, lineWidth, strokeStyle) => {
  ctx.beginPath()
  ctx.moveTo(startX, startY)
  ctx.lineTo(startX, startY + lineLength)
  ctx.lineWidth = lineWidth
  ctx.strokeStyle = strokeStyle
  ctx.stroke()
  ctx.closePath()
}

/**
 * 绘制三角形
 * @param ctx canvas上下文
 * @param centerX 三角形中心点x坐标
 * @param centerY 三角形中心点y坐标
 * @param base 三角形底边长度
 * @param triangleHeigth 三角形高度
 * @param fillStyle 填充颜色
 */
export const drawTriangle = (ctx, centerX, centerY, base, triangleHeigth, fillStyle) => {
  ctx.beginPath()
  ctx.moveTo(centerX - base / 2, centerY)
  ctx.lineTo(centerX + base / 2, centerY)
  ctx.lineTo(centerX, centerY - triangleHeigth)
  ctx.fillStyle = fillStyle
  ctx.fill()
  ctx.closePath()
}
